import { Vector2 } from './MathTypes';

/**
 * SceneData Interface
 * 
 * Represents the data structure for a complete scene.
 */
export interface SceneData {
  id: string;
  name: string;
  width: number;
  height: number;
  elements: SceneElementData[];
  backgroundColor?: string;
}

/**
 * SceneElementData Interface
 * 
 * Represents the data structure for a scene element.
 */
export interface SceneElementData {
  id: string;
  type: string;
  position: Vector2;
  scale: Vector2;
  rotation: number;
  visible: boolean;
  zIndex: number;
  [key: string]: any; // Additional properties specific to element type
}

/**
 * BackgroundData Interface
 * 
 * Represents the data structure for a background element.
 */
export interface BackgroundData extends SceneElementData {
  imageUrl: string;
}

/**
 * CharacterData Interface
 * 
 * Represents the data structure for a character element.
 */
export interface CharacterData extends SceneElementData {
  skeletonData?: any;
  animations?: { [name: string]: any };
}